package com.lihepeng.leecode.array2;

import org.junit.Test;

import java.util.Arrays;

/**
 * 给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
 *
 * 注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
 *
 */
public class Solution179 {
    // 进行排序   主要用于没有字符相同的情况下
    // 如果 首字符相同  [4,45] 犹豫445 < 454 所以45 在前
    public String largestNumber(int[] nums) {
        if (nums.length ==0){
            return "0";
        }
        int n = nums.length;
        Integer[] numsWrapper = new Integer[n];

        for(int i =0;i<nums.length;i++){
            numsWrapper [i] = nums[i];
        }
        Arrays.sort(numsWrapper,(obj1,obj2)->{
            // 自定义排序函数
            long x1 = Long.parseLong(obj1.toString()+obj2.toString());
            long x2 = Long.parseLong(obj2.toString()+obj1.toString());
            return (int)(x2-x1);
        });
        if (numsWrapper[0] ==0){
            return "0";
        }
        StringBuffer sb = new StringBuffer();
        for (int i=0;i<numsWrapper.length;i++){
            sb.append(numsWrapper[i]);
        }
        return sb.toString();
    }
    @Test
    public void runTest(){
       int [] arrs =  {10,2};
        String s = largestNumber(arrs);
        System.out.println(s);
    }
}
